package Students;

//学生管理系统的主要操作

import java.util.ArrayList;
import java.util.Scanner;

import Students.Student;

public class Mains {
    ArrayList<Student> list = new ArrayList<>();
    Scanner s = new Scanner(System.in);

    //向ArrayList中添加学生信息,,成功返回true,失败返回false
    public boolean Add(Student st) {
        //当容器内没有任何元素时，直接添加
        if (list.isEmpty())
            list.add(st);
            //当容器中有内容时，对ID的唯一性进行判断
        else {
            if (Jug(st.getId())) {
                return false;
            }
            list.add(st);
        }
        return true;
    }

    //对ID的唯一性进行判断,不唯一返回true,唯一返回false
    public boolean Jug(String ids) {
        if (Index(ids) >= 0)
            return true;
        else
            return false;
    }

    //查询学生信息,成功返回true,失败返回false
    public boolean Select(String id) {
        //判断用户输入的ID是否存在，存在则显示学生的信息，不存在则提示错误
        if (Jug(id)) {
            if (list.get(Index(id)).getId().equals(id))
                System.out.println(list.get(Index(id)).toString());
            return true;
        } else
            System.out.println("当前无该学生信息，请添加后再查询");
        return false;
    }

    //删除学生信息,成功返回true,失败返回false
    public boolean Delete(String id) {
        //判断用户输入的ID是否存在，存在则删除学生的信息，不存在则提示错误
        if (Jug(id)) {
            list.remove(Index(id));
            System.out.println("删除成功！");
            return true;
        } else {
            System.out.println("该ID不存在，无法删除！");
            return false;
        }
    }

    //修改学生信息,成功返回true,失败返回false
    public boolean Update(String id) {
        Student st = new Student();
        //判断用户输入的ID是否存在，存在则进行修改学生的信息，不存在则提示错误
        if (Jug(id)) {
            st = list.get(Index(id));
            Updates(st);//修改操作
            return true;
        } else {
            System.out.println("该ID不存在，请重新输入！");
            return false;
        }
    }

    //修改操作
    public boolean Updates(Student st) {
        while (true) {
            //修改提示
            System.out.println("************修改选项************");
            System.out.println("A.修改学生的ID");
            System.out.println("B.修改学生的姓名");
            System.out.println("C.修改学生的年龄");
            System.out.println("D.修改学生的家庭地址");
            System.out.print("请您进行选择；");

            String work = s.next();
            switch (work) {
                //修改ID
                case "A": {
                    System.out.println("请输入修改后的学生ID：");
                    String id = s.next();
                    //对用户修改的ID进行唯一性检验
                    if (Jug(id)) {
                        //不唯一，不允许修改
                        System.out.println("该ID已存在，请重新选择进行输入！");
                        break;
                    } else {
                        //唯一，进行修改
                        st.setId(id);
                        return true;
                    }
                }
                //修改姓名
                case "B": {
                    System.out.println("请输入学生的姓名：");
                    String name = s.next();
                    st.setName(name);
                    return true;
                }
                //修改年龄
                case "C": {
                    System.out.println("请输入学生的年龄：");
                    int age = s.nextInt();
                    st.setAge(age);
                    return true;
                }
                //修改家庭地址
                case "D": {
                    System.out.println("请输入学生的家庭地址：");
                    String address = s.next();
                    st.setAddress(address);
                    return true;
                }
                //对用户错误输入进行提示
                default: {
                    System.out.println("输入错误，请重新选择！");

                }
            }
        }

    }

    //根据ID获取对应的索引
    public int Index(String id) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getId().equals(id))
                return i;
        }
        return -1;
    }

    //显示所有学生的信息
    public void Output() {
        if (list.isEmpty())
            System.out.println("当前无学生信息！");
        else {
            System.out.println("ID\t姓名\t年龄\t家庭地址");
            for (int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i).Put());
            }
        }
    }

}
